<?php
class ContaBSN extends GenericBSN {

	function __construct() {
		$this->dao = new ContaDAO();		
	}

	public function consultar($vars) {
		$this->preencher($vars);
		$this->Records = $this->dao->consultar($this->where, $this->params, $this->order . $this->limit);
		$this->Result  = "OK";
	}
	
	public function consultarNome($vars) {
		$this->Records = $this->dao->consultarNome($vars['nome']);
		$this->Result  = "OK";
	}
	
	public function consultarPK($vars) {
		$this->Records = $this->dao->consultarPK($vars['id']);
		$this->Result = "OK";
	}

	public function inserir($vars) {
		$registro['nome']	 = $vars['nome'];
		$registro['banco']	 = $vars['banco'];
		$registro['numero']  = $vars['numero'];
		$registro['agencia'] = $vars['agencia'];
		$registro['saldo']	 = $vars['saldo'];
		
		try {
			$this->Record = $this->dao->inserir($registro);
			$this->Result  = "OK";
		} catch (Exception $e) {
			$this->Result  = "ERROR";
			$this->Message = "Erro ao tentar inserir: " . $e->getMessage();
		}
	}
	
	public function alterar($vars) {
		$registro['id'] 	 = $vars['id'];
		$registro['nome']	 = $vars['nome'];
		$registro['banco']	 = $vars['banco'];
		$registro['numero']  = $vars['numero'];
		$registro['agencia'] = $vars['agencia'];
						
		try {
			$this->Record = $this->dao->alterar($registro);
			$this->Result  = "OK";
		} catch (Exception $e) {
			$this->Result  = "ERROR";
			$this->Message = "Erro ao tentar alterar: " . $e->getMessage();
		}
	}

	public function excluir($registro) {
		try {
			$res = $this->dao->excluir($registro['id']);
			$this->Result  = "OK";
		} catch (Exception $e) {
			$this->Result  = "ERROR";
			$this->Message = "Erro ao tentar excluir: " . $e->getMessage();
		}
	}
	
	public function extrato($vars) {
		try {
			if (!isset($vars['ct_id'])) {
				throw new Exception("Conta bancária não informada!");
			}
			if (!isset($vars['dt_ini'])) {
				throw new Exception("Data inicial do período não informada!");
			}
			if (!isset($vars['dt_fim'])) {
				throw new Exception("Data final do período não informada!");
			}
			
			$dao = new SaldoDAO();
			
			$this->Records = $dao->consultarExtrato($vars['ct_id'], $vars['dt_ini'], $vars['dt_fim']);
			$this->Result  = "OK";
		} catch (Exception $e) {
			$this->Result  = "ERROR";
			$this->Message = "Erro ao consultar extrato: " . $e->getMessage();
		}
	}
	
	public function saldos($vars) {
		try {
			if (!isset($vars['data'])) {
				throw new Exception("Data para o saldo não informada!");
			}

			$dao = new SaldoDAO();
			
			$this->Records = $dao->consultarSaldos($vars['data']);
			$this->Result  = "OK";
		} catch (Exception $e) {
			$this->Result  = "ERROR";
			$this->Message = "Erro ao consultar extrato: " . $e->getMessage();
		}
	}
	
	public function importarSaldos() {
		set_time_limit(0);
		$recs		= null;
		$saldoDAO	= new SaldoDAO();
		$ctIds		= array("22832" => 13, "22804" => 12);
		$saldoId	= array(0 => "N", 1 => "S");
		
		try {
			for ($k = 1; $k < 5; $k++) {
				$fonte 		= file("saldo$k.csv");
				foreach($fonte as $num => $linha) {
					unset($reg);
					$reg 	= explode(",", $linha);
				
					for ($i = 0; $i < count($reg); $i++) {
						$reg[$i] = substr($reg[$i], strpos($reg[$i], '"') + 1);
						$reg[$i] = str_replace('"', "", $reg[$i]);
					}
	
					$saldo['conta'] 		= $ctIds[$reg[0]];
					$saldo['vr_movimento'] 	= (trim($reg[1]) == "") ? "0.00" : substr($reg[1], 0, strpos($reg[1], ".") + 3);
					$saldo['historico'] 	= trim($reg[2]);
					$saldo['dc'] 			= trim($reg[3]);
					$saldo['saldo_atual'] 	= (trim($reg[5]) == "") ? "0.00" : substr($reg[5], 0, strpos($reg[5], ".") + 3);
					$saldo['data'] 			= trim($reg[6]);
					$saldo['saldo_ant'] 	= (trim($reg[7]) == "") ? "0.00" : substr($reg[7], 0, strpos($reg[7], ".") + 3);
					$saldo['saldo'] 		= $saldoId[trim($reg[8])];
	
					if ($saldoDAO->importarRegistro($saldo, false)) {
						$saldo['id'] = $saldoDAO->ultimoId();
						$recs[] 	 = $saldo;
						unset($saldo);
					} else {
						throw new Exception("Erro na importação: " . var_dump($saldo));
					}
				}
				$this->dao->commit();
			}
			$this->Records = $recs;
			$this->Result  = "OK";
		} catch (Exception $e) {
			$this->Records = $recs;
			$this->Result  = "ERROR";
			$this->Message = "Erro ao importar saldos: " . $e->getMessage();
		}
	}
}
?>